package com.arraylist.p2.arraytest;

/**
 * 查找数组重复元素
 */
public class test03 {
    public static void main(String[] args) {
        int[] arr={0,3,4,1,2,8};
        int repeatNumber = getRepeatNumber(arr);
        System.out.println(repeatNumber);
    }

    /**
     * 数组中重复的元素
     * @param arr
     * @return
     */
    public static int getRepeatNumber(int[] arr){

        if(arr==null || arr.length==0){
            return -1;
        }
        //遍历所有元素
        for(int i=0;i<arr.length;){

            //判断数组元素是否合法
            if(arr[i]<0||arr[i]>arr.length){
                return -1;
            }
            //arr[i]==i
            if(arr[i]==i){
                i++;
            }
            //arr[i]!=i
            else{
                //找到了重复的元素
                if(arr[i]==arr[arr[i]]){
                    return arr[i];
                }
                //没找到则交换位置
                else{
                    int temp=arr[i];
                    arr[i]=arr[arr[i]];
                    arr[temp]=temp;
                }
            }
        }
        //数组中不存在重复的元素
        return -1;
    }

}
